/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package edu.ucsur.tp.sistemainventario.dao;

import java.sql.*;
import edu.ucsur.tp.sistemainventario.beans.Almacen;
import edu.ucsur.tp.sistemainventario.utils.Conexion;
import java.util.*;
/**
 *
 * @author luis.hidalgo
 */
public class MySqlAlmacenDAO implements AlmacenDAO {

  public void insertarAlmacen(Almacen almacen) {
    String sql = "INSERT INTO almacen ( codigo, nombre, direccion, departamento, provincia, distrito, comentarios ) ";
    sql += " VALUES ( ?, ?, ?, ?, ?, ?, ? ) ";
    try {
      Connection conn = Conexion.getConnection();
      PreparedStatement pstmt = conn.prepareStatement(sql);
      pstmt.setInt(1, almacen.getCodigo());
      pstmt.setString(2, almacen.getNombre());
      pstmt.setString(3, almacen.getDireccion());
      pstmt.setString(4, almacen.getDepartamento());
      pstmt.setString(5, almacen.getProvincia());
      pstmt.setString(6, almacen.getDistrito());
      pstmt.setString(7, almacen.getComentarios());
      pstmt.executeUpdate();
      pstmt.close();
      conn.close();
    } catch (Exception ex) {
      ex.printStackTrace();
    }
  }
  
  public void actualizarAlmacen (Almacen almacen){
      String sql = "UPDATE almacen SET codigo = ?, nombres = ?, direccion = ?, departamento = ?, provincia = ?, distrito = ?, comentario = ? WHERE codigo = ? ";
    try {
      Connection conn = Conexion.getConnection();
      PreparedStatement pstmt = conn.prepareStatement(sql);
      pstmt.setInt(1, almacen.getCodigo());
      pstmt.setString(2, almacen.getNombre());
      pstmt.setString(3, almacen.getDireccion());
      pstmt.setString(4, almacen.getDepartamento());
      pstmt.setString(5, almacen.getProvincia());
      pstmt.setString(6, almacen.getDistrito());
      pstmt.setString(7, almacen.getComentarios());
      pstmt.executeUpdate();
      pstmt.close();
      conn.close();
    } catch (Exception ex) {
      ex.printStackTrace();
    }
  }
  
  public void eliminarAlmacen(int codigo) {
    String sql = "DELETE FROM almacen WHERE codigo = ? ";
    try {
      Connection conn = Conexion.getConnection();
      PreparedStatement pstmt = conn.prepareStatement(sql);
      pstmt.setInt(1, codigo);
      pstmt.executeUpdate();
      pstmt.close();
      conn.close();
    } catch (Exception ex) {
      ex.printStackTrace();
    }
  }
  
  public List<Almacen> getListaAlmacenPorNombre(String filtroNombre) {
    List<Almacen> listaAlmacen = new ArrayList<Almacen>();
    String sql = "SELECT * FROM almacen WHERE nombres like ?";
    try {
      Connection conn = Conexion.getConnection();
      PreparedStatement pstmt = conn.prepareStatement(sql);
      pstmt.setString(1, "%" + filtroNombre + "%");
      ResultSet rs = pstmt.executeQuery();
      while (rs.next()) {
        Almacen almacen = new Almacen();
        almacen.setCodigo(rs.getInt("codigo"));
        almacen.setNombre(rs.getString("nombre"));
        almacen.setDireccion(rs.getString("direccion"));
        almacen.setDepartamento(rs.getString("departamento"));
        almacen.setProvincia(rs.getString("provincia"));
        almacen.setDistrito(rs.getString("distrito"));
        almacen.setComentarios(rs.getString("comentarios"));
        listaAlmacen.add(almacen);
      }
      rs.close();
      pstmt.close();
      conn.close();
      return listaAlmacen;
    } catch (Exception ex) {
      ex.printStackTrace();
    }
    return null;
  }
  
  public Almacen getAlmacen(int codigo) {
    String sql = "SELECT * FROM almacen WHERE codigo = ?";
    try {
      Connection conn = Conexion.getConnection();
      PreparedStatement pstmt = conn.prepareStatement(sql);
      pstmt.setInt(1,codigo);
      ResultSet rs = pstmt.executeQuery();
      
      if (rs.next()) {
        Almacen almacen = new Almacen(); 
        almacen.setCodigo(rs.getInt("codigo"));
        almacen.setNombre(rs.getString("nombre"));
        almacen.setDireccion(rs.getString("direccion"));
        almacen.setDepartamento(rs.getString("departamento"));
        almacen.setProvincia(rs.getString("provincia"));
        almacen.setDistrito(rs.getString("distrito"));
        almacen.setComentarios(rs.getString("comentarios"));
        return almacen;
      }
      rs.close();
      pstmt.close();
      conn.close();
    } catch (Exception ex) {
      ex.printStackTrace();
    }
    return null;
  }

 }
